package 浏览器类

import (
	"errors"
	"gitee.com/go_888/xcgui/xcgui/edge/webviewloader"
	"golang.org/x/sys/windows"
	"syscall"
	"unsafe"
)

func X布尔到整数(布尔值 bool) int {
	if 布尔值 {
		return 1
	}
	return 0
}

// CoTaskMemFree 用于释放通过 COM（Component Object Model）任务内存分配器分配的内存。
func X释放COM(内存地址 unsafe.Pointer) {
	windows.CoTaskMemFree(内存地址)
}

func X错误转换错误码(错误 error) (syscall.Errno, bool) {
	var errno syscall.Errno
	if errors.As(错误, &errno) { // 处理嵌套错误
		return errno, true
	}
	return 0, false
}

// CreateCoreWebView2EnvironmentWithOptions 使用指定选项创建一个 WebView2 环境。
//
// browserExecutableFolder: 浏览器可执行文件的文件夹路径, 可为空字符串。
//
// userDataFolder: 用户数据文件夹路径。
//
// environmentOptions: 包含 WebView2 环境选项的 ICoreWebView2EnvironmentOptions 对象指针。
//
// environmentCompletedHandler: 当 WebView2 环境创建完成时调用。
func X底层_创建WebView2(webview2目录, webview2缓存 string, 环境选项 *ICoreWebView2EnvironmentOptions, 创建完成处理程序 *ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler) (uintptr, error) {
	return webviewloader.CreateCoreWebView2EnvironmentWithOptions(webview2目录, webview2缓存, uintptr(unsafe.Pointer(环境选项)), uintptr(unsafe.Pointer(创建完成处理程序)))
}

// GetAvailableBrowserVersionWithOptions 获取本机安装或指定目录的可用的 webview2 运行时的版本号。没有可用的则返回空字符串。
//
// browserExecutableFolder: webview2 可执行文件的文件夹路径, 为空则获取本机安装的。
//
// environmentOptions: WebView2 环境选项的 ICoreWebView2EnvironmentOptions 对象指针。
func X取已安装WebView2版本(webview2目录 string, 环境选项 *ICoreWebView2EnvironmentOptions) (string, error) {
	return webviewloader.GetAvailableBrowserVersionWithOptions(webview2目录, uintptr(unsafe.Pointer(环境选项)))
}
